package Dominio;

import hbt.PersistentObject;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.*;

import dto.ItemSolicitudDeCotizacionTO;
import dto.SolicitudDeCotizacionTO;


@Entity
@Table(name = "solicitudes_cotizacion")
public class SolicitudDeCotizacion extends PersistentObject{

	private static final long serialVersionUID = 1L;
	
	private int numeroSolicitudCotizacion;
	
	private String estadoSolicitud;
	
	@ManyToOne(cascade = CascadeType.MERGE)
	@JoinColumn(name="idCliente")
	private Cliente cliente;
	
	
	@OneToMany(cascade=CascadeType.ALL)
	@JoinColumn(name="idSolicitudCotizacion")
	private List<ItemSolicitudDeCotizacion> itemsSolicitudDeCotizacion;
		

	@Column(name = "fechaSolicitud")
	@Temporal(TemporalType.DATE)
	private Date fechaSolicitud;
	


	public List<ItemSolicitudDeCotizacion> getItemsSolicitudDeCotizacion() {
		return itemsSolicitudDeCotizacion;
	}
	public void setItemsSolicitudDeCotizacion(
			List<ItemSolicitudDeCotizacion> itemsSolicitudDeCotizacion) {
		this.itemsSolicitudDeCotizacion = itemsSolicitudDeCotizacion;
	}
	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	
	
	public Date getFechaSolicitud() {
		return fechaSolicitud;
	}
	public void setFechaSolicitud(Date fechaSolicitud) {
		this.fechaSolicitud = fechaSolicitud;
	}
	
	public int getNumeroSolicitudCotizacion() {
		return numeroSolicitudCotizacion;
	}
	public void setNumeroSolicitudCotizacion(int numeroSolicitudCotizacion) {
		this.numeroSolicitudCotizacion = numeroSolicitudCotizacion;
	}
	
	public SolicitudDeCotizacionTO toTO() {

		List<ItemSolicitudDeCotizacionTO> itemsSolCotTO = new ArrayList<ItemSolicitudDeCotizacionTO>();
		for(ItemSolicitudDeCotizacion itemSC : this.itemsSolicitudDeCotizacion){
			itemsSolCotTO.add(itemSC.toTO());
		}	

		SolicitudDeCotizacionTO solCotTO = new SolicitudDeCotizacionTO(this.numeroSolicitudCotizacion, this.cliente.toTO(), itemsSolCotTO, this.fechaSolicitud);
		solCotTO.setEstadoSolicitud(estadoSolicitud);
		return solCotTO;
	}
	public String getEstadoSolicitud() {
		return estadoSolicitud;
	}
	public void setEstadoSolicitud(String estadoSolicitud) {
		this.estadoSolicitud = estadoSolicitud;
	}
}
